Miêu tả RPM_(phần_mềm)

Trong khi định dạng RPM là như nhau trên các bản phân phối Linux khác nhau, quy ước chi tiết và hướng dẫn có thể khác nhau giữa chúng.

Tên file và nhãn của các gói

Một RPM được phân phối trong một tập tin duy nhất, thường là trong các định dạng:

<name>-<version>-<release>.<architecture>.rpm

ví dụ như:

libgnomeuimm-2.0-2.0.0-3.i386.rpm

where <name> is libgnomeuimm, <version> is 2.0, <release> is 2.0.0-3, and <architecture> is i386.

Mã nguồn cũng có thể được phân phối trong các gói RPM trong trường hợp đó <architecture> được quy định như src as in,libgnomeuimm-2.0-2.0.0-3.src.rpm

RPM với phần mở rộng noarch.rpm tham khảo các gói mà không phụ thuộc vào kiến trúc của một máy tính nào đó. Chúng bao gồm đồ họa và văn bản cho một chương trình khác để sử dụng, và các chương trình viết bằng ngôn ngữ lập trình thông dịch như các chương trình Python và shell scripts.

Nội dung RPM cũng bao gồm một package label, chứa các mảnh thông tin sau đây:

  • tên phần mềm
  • phiên bản phần mềm (phiên bản lấy từ nguồn ngược dòng gốc của phần mềm)
  • phát hành gói (số lần các gói đã được built lại bằng cách sử dụng cùng một phiên bản của phần mềm). Trường này cũng thường được sử dụng để chỉ ra sự phân bố cụ thể các gói cho bằng cách thêm các chuỗi như "mdv" (trước đây là, "mdk") (Mandriva Linux), "mga" (Mageia), "fc4" (Fedora Core 4), "rhl9" (Red Hat Linux 9), "suse100" (SUSE Linux 10.0)...
  • kiến trúc của gói khi built (i386, i686, x86_64, ppc,...)

Các trường label không cần phải phù hợp với tên tập tin.

Thư viện đóng gói

Thư viện được phân phối trong hai gói riêng biệt cho mỗi phiên bản. Một chứa mã biên dịch sẵn để sử dụng run-time, trong khi cái thứ hai có chứa các tập tin phát triển liên quan như tiêu đề... Những gói có "-devel" nối vào trong tên. Các quản trị viên hệ thống phải đảm bảo rằng các phiên bản của hệ nhị phân và các gói phát triển phù hợp.

Định dạng

Định dạng nhị phân và bao gồm bốn phần:

  • Lead, trong đó xác định các tập tin như một tập tin RPM và chứa nhiều header dư thừa.
  • Chữ ký, có thể được sử dụng để đảm bảo tính toàn vẹn và / hoặc tính xác thực.
  • Header, chứa metadata bao gồm tên gói, phiên bản, kiến trúc, danh sách tập tin...
  • Một kho lưu trữ tập tin (payload), mà thường là ở định dạng cpio, nén với gzip. Các công cụ rpm2cpio cho phép thu hồi các tập tin cpio mà không cần phải cài đặt gói RPM.[11]
    • Các phiên bản gần đây của RPM cũng có thể sử dụng kiểu nén bzip2, lzip,[12] lzma, hoặc xz..
    • Định dạng RPM 5.0 hỗ trợ sử dụng  chuẩn nén xar.

SPEC file

Các "Recipe" để tạo ra một gói RPM là một file spec. File Spec có phần mở rộng ".spec" và chứa tên gói, phiên bản, số RPM sửa đổi, các bước để xây dựng, cài đặt, và dọn dẹp một gói, và một changelog. Nhiều gói có thể được xây dựng từ một file RPM đặc tả duy nhất, nếu muốn. Gói RPM được tạo ra từ các tập tin RPM đặc tả bằng cách sử dụng công cụ rpmbuild.

File Spec thường phân bố trong các tập tin SRPM, có chứa các file spec đóng gói cùng với mã nguồn.

SRPM

Một RPM điển hình là phần mềm tiền biên dịch sẵn sàng để cài đặt trực tiếp. Các mã nguồn tương ứng cũng có thể được phân phối. Điều này được thực hiện trong một SRPM, bao gồm cả các file "SPEC" mô tả các phần mềm và cách nó được xây dựng. Các SRPM cũng cho phép người sử dụng để biên dịch, và có thể sửa đổi, mã chính nó.

Một gói phần mềm có thể chỉ chứa các script là kiến trúc độc lập. Trong một trường hợp như vậy chỉ có một SRPM có thể có sẵn; đây vẫn là một RPM cài đặt.